Generally, printers are available as monochrome only printers, such as printers that print only in gray and black, or color printers that print in color as well as monochrome. These printers generally operate by converting an image on a client device, such as a personal computer, into data that may be received by a formatter included in the printer. The formatter may generate coded data representing the image, which may be then transmitted by the formatter to a print engine that drives the mechanisms of the printer to convert the data back into an image that is printed on a print medium, such as paper.
Printing devices generally utilize a two-dimensional matrix of image elements or pixels. Each pixel in a color image matrix, for example, may comprise Red (“R”), Green (“G”), and Blue (“B”) cells. Each such cell may be represented by a corresponding memory cell that may store a numeric value. A computer program may then cause a particular pixel to be printed in any visible color, or to appear black or white, by setting the numeric values of its red, green, and blue cells to appropriate values for the printer.
In many products and applications, pixel information of a pixel may be processed (e.g., interpolated or amended) by a processing unit (e.g., a formatter included in the printer) based on, for example, pixel information of one or more neighboring pixels, as is well known to those skilled in the art. This processing of the pixel information may improve the overall quality of the printed image produced by the printer. Depending upon the type of printer being utilized, the processing may be used, for example, to remove artifacts from an image that could cause problems, such as “toner explosion” (toner explosion refers to toner that is scattered when moisture in the media suddenly vaporizes). The processing may also be used to calibrate the image information for the printer to adjust for particular printer characteristics, so that the final printed image faithfully reproduces the original image. The processing may also be used to enhance the printed image to improve it over the original image, for example, by the removal of “red eye” in a photograph. Other types of processing to enhance the printed image quality may also be easily envisioned by those skilled in the art. For the purpose of this disclosure, in various embodiments, any such processing (e.g., artifact removal, red-eye removal, image calibration, resolution enhancement, etc.) may be referred herein as image enhancement processing.
In various embodiments, such image enhancement processing may be performed serially on the image data on a pixel-by-pixel basis. For example, the pixels may be individually windowed by selecting a small window or matrix of the pixels that surround a selected pixel that is being processed. The processing on the selected pixel may be then based at least in part on the values of the surrounding pixels. Once the processing of the selected pixel is over, the process may be repeated for another pixel.
Generally, for each type of image enhancements, a complete table of all possible windows may be stored in a printer memory. The table may serve as a look up table (LUT). A printer processing unit may match the window of a target pixel (i.e., the selected pixel for which the processing is to be currently performed) to a corresponding entry in the LUT to obtain instructions, from that matching LUT pattern, for optimizing (e.g., correcting or amending) the value of the target pixel. Thus, each LUT may need to store all possible combinations of such pixel windows. Each such LUT may therefore be very large (based at least in part on the size of the pixel window) and may require a large amount of memory. For example, a 5-row by 3-column LUT may have 32,768 (i.e., 2^15) entries and a 5-row by 5-column LUT may have 33,554,432 (i.e., 2^25) entries.
As the speed of the printer may depend in part on the speed of the image enhancement processing, it may be desired to accomplish such processing in a relatively speedy manner. Accordingly, it may be desirable to store the LUT in relatively faster memory. For example, it may be desirable to store the LUT in a processor cache. However, the relatively large size of the LUT may prohibit the storing of the LUT in the cache. Thus, to support ever increasing printer operating speeds, some of the prior solutions have resorted to expensive and specialized hardware solutions, such as large, dedicated, high-speed memories (e.g., high-speed random access memories or RAMs). A need remains for faster, more efficient, and less expensive methods and mechanisms for optimizing memory utilization, especially processor cache memory utilization, for image processing and storing the LUT.